cefabcf5208837ea70b767539ac5e1d8743e4ce7,OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java,RouteResultPreparation,mergeTurnLanes,#boolean#RouteSegmentResult#RouteSegmentResult#,429

Before Change


	}

	private void mergeTurnLanes(boolean leftSide, RouteSegmentResult currentSegment, RouteSegmentResult nextSegment) {
		boolean isUsingTurnLanes = TurnType.getPrimaryTurn(currentSegment.getTurnType().getLanes()[0]) != 0
			&& TurnType.getPrimaryTurn(nextSegment.getTurnType().getLanes()[0]) != 0;
		if (isUsingTurnLanes) {
			int[] lanes = new int[currentSegment.getTurnType().getLanes().length];
			// Unset the allowed lane bit
			for (int i = 0; i < lanes.length; i++) {
				lanes[i] = currentSegment.getTurnType().getLanes()[i] & ~1;
			}

			// Find the first lane that matches (based on the turn being taken), and how many lanes match
			int matchingIndex = 0;
			int maxMatchedLanes = 0;
			for (int i = 0; i < lanes.length; i++) {
				int matchedLanes = 0;
				for (int j = 0; j < nextSegment.getTurnType().getLanes().length - i; j++) {
					if (TurnType.getPrimaryTurn(nextSegment.getTurnType().getLanes()[j])
                            == TurnType.getPrimaryTurn(currentSegment.getTurnType().getLanes()[i + j])) {
						matchedLanes++;
					} else {
						break;
					}
				}
				if (matchedLanes > maxMatchedLanes) {
					matchingIndex = i;
					maxMatchedLanes = matchedLanes;
				}
			}
			if (maxMatchedLanes <= 1) {
				return;
			}

			// Copy the allowed bit from the next segment's lanes to the current segment's matching lanes
			for (int i = matchingIndex; i - matchingIndex < nextSegment.getTurnType().getLanes().length; i++) {
				lanes[i] |= nextSegment.getTurnType().getLanes()[i - matchingIndex] & 1;
			}
			TurnType t = currentSegment.getTurnType();
			t.setLanes(lanes);

After Change



	private void mergeTurnLanes(boolean leftSide, RouteSegmentResult currentSegment, RouteSegmentResult nextSegment) {
		TurnType currentTurn = currentSegment.getTurnType();
		TurnType nextTurn = nextSegment.getTurnType();
		boolean isUsingTurnLanes = TurnType.getPrimaryTurn(currentTurn.getLanes()[0]) != 0
			&& TurnType.getPrimaryTurn(nextTurn.getLanes()[0]) != 0;
		if (isUsingTurnLanes) {